# -*- coding: utf-8 -*-
"""
@Time ： 2022/4/11 14:42
@Auth ： 龙龙
"""
# 第三周作业
# 1.快速统计:
# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y
# 2.降序切割:
# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y，根据出现的次数降序排列，并且列出出现次数最多的三个元素


# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y
import operator
from collections import Counter

letter = "abcevaefegsgdghfdefavbdr"
print(letter, type(letter))
resoult = {}
resoults = []
for i in letter:
    resoult[i] = letter.count(i)  # 遍历每个元素并统计元素的数量存在字典中
for key in resoult:  # 格式化输出结果
    key = "{}"":""{}次".format(key, resoult[key])
    resoults.append(key)
print(resoults, type(resoults))


# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y，根据出现的次数降序排列，并且列出出现次数最多的三个元素
# Sort = sorted(key,reverse=True)
# sorted 方法会生成一个排序好的容器
# operator.itemgetter(1)  获取字典第一维的数据进行排序
# reverse 表示倒序排列
print('========================降序排序的方法一========================================')
List = sorted(resoult.items(), key=operator.itemgetter(1), reverse=True)
Dict = dict(List)  # 转换为字典
print('降序排列:', Dict, type(Dict))


print('=====================降序排序和次数最多的三个元素方法二===========================')
Collection_word = Counter(letter)  # Counter模块中计算元素的次数
most_countnum = Collection_word.most_common(3)  # most_common方法计算3个元素的最多
print('降序排列:', Collection_word, type(Collection_word))
print("出现次数最多的三个元素:", most_countnum, type(most_countnum))


# 输出优化下
# 不使用内置函数实现下
